In modem "enterprise" computing environments, that is, computer systems for use in an office environment in a company, a number of personal computers, workstations, mini-computers and mainframe computers, along with other devices such as large mass storage subsystems, network printers and interfaces to the public telephony system, may be interconnected to provide an integrated environment in which information may be shared among users in the company. Typically, users may be performing a variety of operations, including order receipt, manufacturing, shipping, billing, inventory control, and other operations, in which sharing of data on a real-time basis may provide a significant advantage over, for example, maintaining separate records and attempting to later reconcile them. The users may operate on their own data, which they may maintain on the computers they are using, or alternatively they may share data through the large mass storage subsystems.
Given the importance of the availability of information to an enterprise, several strategies have been developed to provide for enhanced safety and availability of data stored in a mass storage system in the event of a failure or other malfunction. In one strategy, data stored on, for example, a disk storage subsystem will be periodically backed up onto another, less expensive medium, such as magnetic tape. While such a strategy can be provide some use protection, it does suffer some drawbacks. First, since the data is only periodically backed up, data that has been updated or modified since the last backup will not be protected. In addition, for a large mass storage subsystem, the time required to perform a back-up can be quite long, which can interfere with access to the mass storage subsystem by others in the enterprise. In addition, if a failure or other malfunction does occur, if the mass storage subsystem is large the time required to transfer the information from the tape to another mass storage subsystem for use by the enterprise can be quite lengthy.
Other strategies for providing enhanced safety and availability for the information stored on disk storage subsystems make use of additional disks drives and spreading the information across the disk drives. In one such strategy, termed "RAID" (an acronym for "Redundant Array of Inexpensive Disks") information is striped across a plurality of disk drives. At least one additional disk drive, than those required for the information, is provided to store parity or other error correction information so that, if one of the disk drives in the mass storage subsystem fails or otherwise malfunctions, the information from the other disk drives, along with the parity information from the additional disk drive, can be used to regenerate the information that had been stored on the malfunctioning disk drive. While a RAID strategy can be useful in providing enhanced safety and availability, it does require complex and sophisticated controller arrangements for efficiently striping the information across the respective disk drives and generating the appropriate parity information for storage on the additional disk drive.
A second such strategy, termed "mirroring," provides safety and availability of information at least as well as, if not better than, that provided by the RAID strategy, while potentially requiring far less sophisticated controllers. In mirroring, the entire contents of one, for example, mass storage subsystem, are replicated on one or more other mass storage subsystems. Thus, if one or more disk drives on one of the mass storage subsystems fails, the information is immediately available to the enterprise from the another mass storage subsystem. Thus if a catastrophic failure occurs at one mass storage subsystem, such as the failure or malfunction of a number of disk drives or destruction of the entire mass storage subsystem, in a mirrored arrangement the information would still be available from the another mass storage subsystem, which may not be possible in a RAID system. The mirrored mass storage subsystems may be physically located proximate to each other. Alternatively, the mirrored mass storage subsystems may be separated by a significant distance, which will allow information to be available from at least one mass storage subsystem even if the other is destroyed by fire, natural disaster, or the like, which also would not be possible in a RAID system.
One mass storage subsystem useful in such an enterprise is described in, for example, U. S. Pat. No. 5,206,939, entitled System And Method For Disk Mapping And Data Retrieval, issued Apr. 27, 1993 to Moshe Yanai, et al (hereinafter, "the '939 patent"), U.S. patent appliction Ser. No. 07/893,509 filed Jun. 4, 1992 in the name of Moshe Yanai, et al., entitled "System And Method For Dynamically Controlling Cache Management," now U.S. Pat. No. 5,381 539, issued Jan. 10, 1995 and U.S. Pat. No. 5,592,432, entitled Cache Management System Using Time Stamping For Replacement Queue, issued Jan. 7, 1997 in the name of Natan Vishlitzky, et al., (hereinafter "the '432 patent"), all of which are assinged to the assignee of the present invention and incorporated herein by reference. Those patents generally describe an arrangement which allows data, as used by computers, organized in records, with each record being in well-known "CKD" ("count-key-data") format, to be stored in storage devices which provide a "fixed block" storage architecture. In this arrangement, a large cache is used to buffer information that is transferred from the storage devices for use by the respective computers, and, if the data has been modified, transferred back to the storage devices for storage. If such a mass storage subsystem is used in a mirrored arrangement, one of the mass storage subsystems, termed here a "master" subsystem, may be used to service retrieval and storage requests, and the other mass storage subsystem, termed here a "slave" subsystem, may be used to provide mirroring for the information in the master subsystem. In that case, generally, the cache of the master subsystem will be used to buffer both information for retrieval requests and storage requests, whereas the cache for the slave subsystem will generally buffer only information for storage requests, which have been provided thereto by the master subsystem for storage. In such an arrangement, the cache of the slave subsystem may be under-utilized.